`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2024/07/05 18:39:04
// Design Name: 
// Module Name: alu
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module alu(
    op_alu,data1,data2,data,zero
    );

    input [2:0] op_alu;
    input [31:0] data1;
    input [31:0] data2;
    output zero;
    output reg [31:0] data;

    parameter add=0,sub=1,mov=2;

    always @(*) begin
        case (op_alu)
            add : begin
                data = data1 + data2;
            end
            sub : begin
                data = data1 - data2;
            end
            mov : data = data2;
            default : begin
                data = data2;
            end
        endcase
    end

    assign zero = data==0;

endmodule
